home *** CD-ROM | disk | FTP | other *** search
/ Totally AMOS / Totally AMOS - Issue 1 (1991-11)(Tucker, Len - Tucker, Anne).adf / programming / fanatix.seq < prev    next >
Text File  |  1991-09-02  |  10KB  |  220 lines

  1.  217
  2. fff00000ff00fe008033307f001
  3. ^4|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|
  4.  
  5.                      ^2{5FANATIX FANATICS READ ON!!{
  6.  
  7.                          ^1[5By JAG of FANATIX.[0
  8.  
  9. ^4|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|
  10.  
  11. ^1 Well, well, well...
  12.  
  13. ^2  We received a letter a while ago from Len and Anne Tucker asking us
  14. ^2to do an article on how to put a demo together.  It was no easy task,
  15. ^2but here is our attempt...
  16.   
  17. ^5  Once  you  have got your Amiga ready, and bought a copy of AMOS (an
  18. ^5original copy), you are ready to begin.
  19.  
  20. ^7  First,  you  need  an idea of what you want to happen in the demo -
  21. ^7what  effects  you  want  to  incorporate etc.  If you don't have any
  22. ^7ideas, then there are 3 things to try.
  23.  
  24. ^1  1.  Look through any assembly demos you have.  See if there are any
  25. ^1effects or ideas you like that could be emulated by AMOS in some way.
  26. ^1Look  carefully,  seemingly  difficult  effects  can be achieved very
  27. ^1simply if you think about it!
  28.  
  29. ^2  2.   This  is  a favourite of mine.  Load up DPaint, and mess about
  30. ^2with  it  for  a while.  This is how I got the idea for the spotlight
  31. ^2effect in our Blue demo from Megademo 5 (hype, plug).
  32.  
  33. ^5  3.   Look  through  your  program  disks  to  see  if  you have any
  34. ^5interesting  routines  that  haven't  been  used  yet.   They  can be
  35. ^5sellotaped together to make good demos.
  36.  
  37. ^7  Right,  now  you  have your ideas, so it is time to work out how to
  38. ^7put them into AMOS (if necessary).  Take time, there is usually a way
  39. ^7round  things.   Stars,  for  example, can be done in a few different
  40. ^7ways:
  41.  
  42. ^1  -  Plot  them  on a double buffered screen.  Blank the image at the
  43. ^1back,  redraw  it,  then  switch the screens.  This will avoid people
  44. ^1seeing  the  stars  being  erased  and  updated.  Unfortunately, this
  45. ^1method is messy and slow anyway!
  46.  
  47. ^2  -  Bobs.  This is a bad idea too if you want smooth stars.  Use too
  48. ^2many  and  they will begin to jerk.  But if you slow down the updates
  49. ^2(UPDATE EVERY n), they will judder.  Not so good.
  50.  
  51. ^5  -  Sprites.   These  are  a  good  idea  if  you want a multi level
  52. ^5parallax  starfield that doesn't require double buffering and doesn't
  53. ^5interfere  with  the  screen  it  is  on.   Try  to move them totally
  54. ^5independantly  with AMAL, and remember to use the SYNCHRO commands if
  55. ^5you  use  more than 16.  Also, remember the restrictions of width and
  56. ^5heights  imposed  by  sprites.  If you get this wrong, processor time
  57. ^5will be wasted on sprites that won't appear properly, if at all!
  58.  
  59. ^7  -  Colour  cycling.   Very  useful  because  they  use  hardly  any
  60. ^7processor  time  at  all.   Unfortunately,  they  tie  up many colour
  61. ^7registers, and too few colours can mean a starfield that looks like a
  62. ^7plot pattern, or goes too fast!  You should draw them with DPaint, or
  63. ^7write a routine to do it from AMOS.  On the other hand, you could get
  64. ^7hold  of the Fanatix Starfield Maker V1.0 when it is finished (before
  65. ^7Christmas I hope).
  66.  
  67. ^1    To get the idea of how colour cycled stars work, draw a line with
  68. ^1a  pixel of each colour in the palette, and change all but one of the
  69. ^1colours to black.  Now cycle the screen.
  70.  
  71. ^2  Once  you  have  worked out how the effects will be done, write the
  72. ^2seperate routines to run them.  This can be tricky, but should not be
  73. ^2too  taxing  if you have thought out the problems properly.  Make the
  74. ^2routines as either procedures, or bits you can GOSUB to.
  75.  
  76. ^5  So,  now  you  have  the  seperate routines for the effects in your
  77. ^5demo, and it is time to put them together.
  78.  
  79. ^7  The  best  thing  to  do is to try and create a basic version of an
  80. ^7interrupt  system for your routines.  Put them after the main loop as
  81. ^7the  procedures, or the GOSUB loops.  Take all the WAIT VBL's you may
  82. ^7have used out of the routines and do your main loop.  Then put 1 WAIT
  83. ^7VBL  at  the  end  of your main loop, remembering that colour cycling
  84. ^7should  start  before the loop is reached.  Here is an example of all
  85. ^7this for a demo with a scrolling message and some VU bars:
  86.  
  87.  
  88. ^6  Shift Up 1,1,31,1                     - Start colour cycling if used
  89. ^6  Do
  90. ^6    Gosub VUS
  91. ^6    Gosub MESSAGE
  92. ^6    Wait Vbl                            - This should be the ONLY one!
  93. ^6    If Mouse Key=1 Then Goto DIE        - Check for mouse click to end      Loop                                     demo.
  94.  
  95. ^6  VUS:
  96. ^6  ...........                           - Put the VU bar routine here. 
  97. ^6  ...........
  98. ^6  ...........
  99. ^6 Return  
  100.  
  101. ^6  MESSAGE:
  102. ^6  ...........                            - Put the message scrolling    
  103. ^6  ...........                             routine here.      
  104. ^6  ...........
  105. ^6  Return
  106.  
  107. ^6  DIE:
  108. ^6  ...........                           - Close down demo, fade music                                                etc....
  109.  
  110.   
  111. ^1  Yes,  I  know  it  is bad programming practice to use GOSUBs rather
  112. ^1than  Procedures,  but I prefer to have global variables as standard,
  113. ^1it  can  also  save  you  from a full variable buffer.  Sure, you can
  114. ^1increase the size, but that leaves you with less memory, and if there
  115. ^1is a problem with the program, it could keep filling up regardless!!
  116.  
  117. ^2  And now for some hints and tips for putting your demos together.
  118.  
  119. ^5  -  Always  use  a  smaller  amount of colours if some are not being
  120. ^5used.   A  16  colour  screen is updated faster than a 32 colour one!
  121. ^5N.B.   This  does  not  really matter if the screen concerned is only
  122. ^5used for colour cycling of static GFX etc.
  123.  
  124. ^7  -  Instead  of storing fonts on a seperate screen behind the others
  125. ^7and  using  SCREEN  COPY (as in the Sentinel scrollcode supplied with
  126. ^7AMOS),  cut out the font beforehand, and store the individual letters
  127. ^7in  a  sprite bank, according to their ASCII values.  E.g.  Store the
  128. ^7letter A as image 65.  You can then use the following line to get the
  129. ^7right number for a character from your scroll string.  E.g.--
  130.  
  131. ^2                         B=Asc(Mid$(T$,CH,1))
  132.  
  133. ^1  Where  T$  contains your message, CH is the position in the string,
  134. ^1and  B  will  be the number of the sprite image you require.  You can
  135. ^1then use Paste Bob x,y,B to place the letter.
  136.  
  137. ^2  -  Always  remember  to  specify  which  screen the routine you are
  138. ^2running  refers  to.  On a SCROLL based routine, if you forget to set
  139. ^2the  current  screen  to the right one, strange things can, and will,
  140. ^2happen.   When  I  used to use the SCROLL method for moving messages,
  141. ^2the  logo  once  went  zooming along the screen at Mach 3, only to be
  142. ^2replaced by corrupt letters using the wrong palette!!!
  143.  
  144. ^5  -  Try  to  optimise  your  routines as far as possible.  Take, for
  145. ^5example,  this routine to move a number between 0 and 360 at any step
  146. ^5size:
  147.  
  148. ^7                  Add X,XI : If X>360 Then Add X,-360
  149.  
  150. ^1  This  is  much faster than using If - Then statements a lot, and is
  151. ^1much  more accurate if you want to get Sine values.  Degrees run from
  152. ^11 - 360, and if the routine uses the wrong number after reaching 360,
  153. ^1you may get a jerk in movement!!  Don't worry if you don't understand
  154. ^1all this.
  155.  
  156. ^2  - Which reminds me, remember to specify Degrees if you are going to
  157. ^2use Sine functions etc.  AMOS uses Radians (avoid!!) as default.
  158.  
  159. ^5  -  If  you are intending to use any trigonometry functions, to save
  160. ^5disk swapping later on, type in:
  161.  
  162.                                ^7A=Sin (40) 
  163.  
  164. ^1  The  number  is not important, but the line will cause AMOS to load
  165. ^1in the maths libraries.
  166.  
  167. ^2  - When you are using a Dual Playfield, before using the command use
  168. ^2a  Wait  Vbl, or the display may get corrupted.  Also, use the Screen
  169. ^2Display  command  if  needed BEFORE you DUAL PLAYFIELD, or again, you
  170. ^2will  get  a  corrupted  display!  Which leads me to the worst of the
  171. ^2Dual  Playfield problems:  THE 16 PIXEL JERK as I like to call it.  I
  172. ^2don't  know  if  this will happen to other people, but it plagues me.
  173. ^2If you are using SCREEN OFFSET on a Dual Playfield screen, at certain
  174. ^2values  the  the playfield you are not moving jerks 16 pixels across,
  175. ^2and  back  again when you go to another value.  Mess around a bit and
  176. ^2you  can  identify  the problem values and avoid them.  Luckily, they
  177. ^2are at even intervals (16, or 12 I think), so you can plan ahead, and
  178. ^2use step increases of the offset to avoid them.
  179.  
  180. ^5  Using  even numbers to increase when you start from 1 is the way to
  181. ^5avoid the jerk.
  182.  
  183. ^7  Right  now,  you should have enough help to get started with decent
  184. ^7demos now, so I hope to see more demo groups appearing in the future,
  185. ^7and I hope this article was of some use to you!!
  186.  
  187.  
  188.                                              ^3JAG from FANATIX in 1991.
  189.  
  190. ^4  P.S. Feel free to contact us at:
  191.  
  192. ^4           Fanatix
  193. ^4            29 Cambridge Road
  194. ^4             Huntingdon
  195. ^4              Cambs
  196. ^4               PE18 8BT. 
  197.  
  198. ^4   Or  you  can phone (0480) 411568, but there is no guarantee that I
  199. ^4won't  just  put  the  phone  straight back on the hook.  I am a busy
  200. ^4person  at  the moment!  You could phone Chaos, but he would probably
  201. ^4just laugh at you...
  202.  
  203. ^4 And  I don't feel like giving his phone number away.  He is only the
  204. ^4GFX'er anyway!
  205.    
  206. ^1  P.P.S.   Buy  our  demos,  Megademo  6 should be released sooner or
  207. ^1later, and you will be able to identify some of the techniques I have
  208. ^1revealed here.
  209.  
  210. ^2  P.P.P.S.   Greets so Cybornetics, The Beholder, Sandra Sharkey, Len
  211. ^2and  Anne  Tucker,  Francois  Lionet  (Please fix the Dual Playfield)
  212. ^2etc...
  213.  
  214. ^6  P.P.P.P.S.   We  are  looking for a GOOD musician, if you think you
  215. ^6fit  the  bill, and would like to join us, then send some examples of
  216. ^6your work to the above address...
  217.  
  218. ^4|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|
  219. \
  220.